#include <iostream>
#include <cmath>
using namespace std;

void bubblesort1A(int A[], int n)
{
    // 起泡排序算法
    bool sorted = false; // sorted 表示本次检查有没有换序过，每次循环初始记为0是因为只要上一次没有换序，就说明已经排序完成了
    for (int i = 0; i < n - 1; i++)
    {
        sorted = true;
        for (int j = 0; j < n - i - 1; j++)
        { // n-i-1是因为每一次都会把一个元素沉底，所以最多进行n-1次，每一次的内层循环次数都比上一次少1
            if (A[j] > A[j + 1])
            {
                swap(A[j], A[j + 1]);
                sorted = true; // 有元素进行了交换，因此sorted记为1
            }
        }
    }
}
int main()
{
    int N;
    int a[1000] = {};
    cin >> N;
    for (int i = 0; i < N; i++)
    {
        cin >> a[i];
    }
    bubblesort1A(a, N);
    for (int i = 0; i < N; i++)
    {
        cout << a[i] << ' ';
    }
    return 0;
}